{#if loadError} {:else} {#await currentUserIdentity} {:then identity} {@const isOwner = identity && identity.name === data.username} {#await badgesPromise} {:then badgesResponse} {#if badgesResponse} {#await badgesResponse.json()} {:then ungroupedBadges}
{#await awcPromise then badges} {#await badges.text() then text} {@const parsedBadges = awcBadgesGrouped(text)} {#if parsedBadges.length > 0} {#each parsedBadges as group}
Anime Watching Club | {group.group}

{#each group.badges as badge} {badge.description} fallback(e, badge.image)} /> {/each}

{/each} {/if} {/await} {/await} {#if ungroupedBadges === null} {:else if ungroupedBadges.length === 0}

No due.moe registered badges found for this user. ?
{:else} {@const groupedBadges = Object.entries(groupBadges(ungroupedBadges))} {#if isOwner}
{$locale().user.badges.backToProfile} {#if editMode && isOwner} {@const groups = groupedBadges .map((group) => group[0]) .filter((group) => group !== 'Uncategorised')}

{#if error}

{error}

{/if} {#if groups.length > 0} ({ name: group, url: '#', onClick: () => { const category = document.querySelector('input[name="category"]'); if (category instanceof HTMLInputElement) category.value = group; } }))} header={false} center={false} > {/if} {#if selectedBadge} {$locale().user.badges.editMode.or} {/if} Must be full date and time, defaults to now if any fields empty {/if}
{/if}

{#each groupedBadges as [category, badges]}

{category}

{#if groupedBadges[groupedBadges.length - 1][0] !== category}

{/if} {/each} {/if}

{:catch} {/await} {:else} {/if} {:catch} {/await} {:catch} This user's badges could not be loaded. {/await} {/if}